<?php

namespace app\admin\controller\game;

use app\common\controller\Backend;

class Games extends Backend

{
    protected $model = null;

    // 可进行查询字段
    protected $searchFields = 'id,gamename';

    public function _initialize()
    {
        parent::_initialize();
        $this->model = model('common/Games/Games');
    }

    // 添加新游戏
    public function add()
    {
        if ($this->request->isPost())
        {
            $params = $this->request->post('row/a');

            if ($params)
            {
                if(!$params['gamename'])
                {
                    $this->error('请输入游戏名称');
                }

                if(!$params['thumbs'])
                {
                    $this->error('请上传游戏截图');
                }

                if(!$params['avatar'])
                {
                    $this->error('请上传游戏图标');
                }

                if ($params['address'])
                {
                    $absolutePath = ROOT_PATH . 'public' . DS . ltrim($params['address'], '/');
                    // 向上取整
                    $params['sizi'] = ceil(filesize($absolutePath) / 1024 / 1024);
                }
            }

            $res = $this->model->save($params);

            if ($res)
            {
                $this->success('添加成功');
            } else {
                $this->error($this->model->getError());
            }
        }

        return $this->view->fetch();
    }

    // 修改更新
    public function edit($ids = Null)
    {
        $row = $this->model->get($ids);

        if (!$row)
        {
            $this->error('数据不存在');
        }

        $this->view->assign('row', $row);

        if ($this->request->isPost())
        {
            $params = $this->request->post('row/a');
            $params['id'] = $ids;


            // 不能为空
            if(empty($params))
            {
                $this->error('请填写内容');
            }

            // 图标处理
            if($row['avatar'] || empty($params['avatar']))
            {
                // 旧图标存在且检查文件还存在就删除
                if($params['avatar'] != $row['avatar'] && $row['avatar'] && file_exists(ROOT_PATH . 'public' . DS . ltrim($row['avatar'], '/')))

                {
                    // 删除旧文件
                    unlink(ROOT_PATH . 'public' . DS . ltrim($row['avatar'], '/'));
                }
            }

            // 图片处理
            if($params['thumbs'] || $row['thumbs'])
            {
            // 字符串转换数组
            $thumbs = explode(',', $row['thumbs']);
            $newthumbs = explode(',', $params['thumbs']);

            //去掉空值
            $thumbs = array_filter($thumbs);
            $newthumbs = array_filter($newthumbs);

            //对旧图片进行筛选，看在不在新的里面，如果不在就删除
            foreach($thumbs as $key => $val)
            {
                if(!in_array($val, $newthumbs)&&file_exists(ROOT_PATH . 'public' . DS . ltrim($val, '/')))

                {
                    // 删除
                    unlink(ROOT_PATH . 'public' . DS . ltrim($val, '/'));
                }
            }
            }

            //游戏文件处理
            if($row['address'] || empty($params['address']))
            {
                //看旧路径是不是和新路径一样
                if($params['address'] != $row['address'])
                {
                    //旧路径存在且检查文件还存在就删除
                   if($row['address'] && file_exists(ROOT_PATH . 'public' . DS . ltrim($row['address'], '/')))
                   {
                     // 删除旧文件
                    unlink(ROOT_PATH . 'public' . DS . ltrim($row['address'], '/'));
                   }
                }

                // 如果新路径为空，那么大小就是null
                if(empty($params['address']))
                {
                    $params['sizi'] = null;
                }else{
                    $absolutePath = ROOT_PATH . 'public' . DS . ltrim($params['address'], '/');
                    // 向上取整
                    $params['sizi'] = ceil(filesize($absolutePath) / 1024 / 1024);
                }
            }

            // 更新
            $res = $this->model->isUpdate(true)->save($params);

            if($res)
            {
                $this->success('更新成功');
            }
            else
            {
                $this->error($this->model->getError());
            }
        }

        return $this->view->fetch();
    }

    // 删除
    public function del($ids = Null)
    {
        $info = $this->model->get($ids);

        if(!$info)
        {
            $this->error('数据不存在');
        }else{
            $thumbs = $info['thumbs'];
            $address = $info['address'];

            //将两者转换为数组
            $thumbs = explode(',', $thumbs);
            $address = explode(',', $address);

            // 把空值去掉
            $thumbs = array_filter($thumbs);
            $address = array_filter($address);

            // 删除图标
            if($info['avatar'])
            {
                if(file_exists(ROOT_PATH . 'public' . DS . ltrim($info['avatar'], '/')))
                {
                    unlink(ROOT_PATH . 'public' . DS . ltrim($info['avatar'], '/'));
                }
            }


            // 遍历删除存在的图片图片
            foreach($thumbs as $key => $val)
            {
                if(file_exists(ROOT_PATH . 'public' . DS . ltrim($val, '/')))
                {
                    unlink(ROOT_PATH . 'public' . DS . ltrim($val, '/'));
                }
            }

            // 遍历删除存在的游戏文件
            foreach($address as $key => $val)
            {
                if(file_exists(ROOT_PATH . 'public' . DS . ltrim($val, '/')))
                {
                    unlink(ROOT_PATH . 'public' . DS . ltrim($val, '/'));
                }
            }
        }

        // 最后直接删除数据库数据
        $res = $this->model->where('id', $ids)->delete();

        if($res)
        {
            $this->success('删除成功');
        }else{
            $this->error($this->model->getError().'删除失败');

        }
    }
}
